import type { BaseFields, PageParams } from "@/api/typing";
import type { BaseStatus } from "@/typing";

/**分页查询菜单参数 */
export interface QueryParams extends PageParams {
  /**菜单名称 */
  menuName: string;
  /**菜单编码 */
  menuCode: string;
  /**菜单状态 */
  menuStatus: BaseStatus;
}
/**分页查询菜单响应 */
export interface QueryResult extends BaseFields {
  /**菜单ID */
  menuId: string;
  /**菜单名称 */
  menuName: string;
  /**菜单编码 */
  menuCode: string;
  /**菜单描述 */
  menuDesc: string;
  /**菜单状态 */
  menuStatus: BaseStatus;
}

/**编辑菜单参数 */
export interface MenuParams {
  /**菜单ID */
  menuId: string;
  /**菜单名称 */
  menuName: string;
  /**菜单编码 */
  menuCode: string;
  /**菜单图标 */
  menuIcon: string;
  /**菜单描述 */
  menuDesc: string;
  /**菜单状态 */
  menuStatus: BaseStatus;
  /**父级菜单ID */
  parentMenuId: string;
  /**国际化名称 */
  localeKey: string;
}

/**删除菜单参数 */
export interface DeleteParams {
  /**菜单ID */
  menuId: string;
}

/**新增菜单关联功能 */
export interface MenuFunctionParams {
  /**主键ID */
  id: string;
  /**菜单ID */
  menuId: string;
  /**功能ID */
  functionId: string;
}

/**列表查询菜单关联功能参数 */
export interface QueryMenuFunctionParams {
  /**菜单ID */
  menuId: string;
}

/**列表查询菜单关联功能响应 */
export interface QueryMenuFunctionResult {
  /**主键ID */
  id: string;
  /**菜单ID */
  menuId: string;
  /**功能ID */
  functionId: string;
  /**功能名称 */
  functionName: string;
  /**功能编码 */
  functionCode: string;
  /**功能图标 */
  functionIcon: string;
  /**国际化名称 */
  localeKey: string;
}

/**删除菜单关联功能 */
export interface DeleteMenuFunctionParams {
  /**主键ID */
  id: string;
}

/**查询根菜单响应 */
export interface QueryTreeResult {
  /**是否叶子节点 */
  isLeaf: boolean;
  /**类型 */
  type: "menu" | "function" | "permission";
  /**绑定值 */
  key: string;
  /**展示值 */
  title: string;
  /**子集 */
  children: QueryTreeResult[];
}
/**树结构 */
export interface TreeStructure extends QueryTreeResult {
  /**是否查询子节点 */
  query?: boolean;
  /**子集 */
  children: TreeStructure[];
  [key: string]: any;
}

/**查询单个菜单响应 */
export interface QueryByIdResult extends BaseFields {
  /**菜单ID */
  menuId: string;
  /**菜单名称 */
  menuName: string;
  /**菜单编码 */
  menuCode: string;
  /**菜单描述 */
  menuDesc: string;
  /**菜单状态 */
  menuStatus: BaseStatus;
}
